---
id: 5900f4ed1000cf542c50fffe
title: 'Завдання 384: послідовність Рудіна-Шапіро'
challengeType: 1
forumTopicId: 302048
dashedName: problem-384-rudin-shapiro-sequence
---

# --description--

Визначимо послідовність $a(n)$ як кількість суміжних пар одиниць в бінарному розкладанні числа $n$ (можливе перекривання).

Наприклад, $a(5) = a({101}_2) = 0$, $a(6) = a({110}_2) = 1$, $a(7) = a({111}_2) = 2$

Визначимо послідовність $b(n) = {(-1)}^{a(n)}$. Таку послідовність називають послідовністю Рудіна-Шапіро.

Також розглянемо суматорну послідовність $b(n)$: $s(n) = \displaystyle\sum_{i = 0}^{n} b(i)$.

Декілька перших значень цих послідовностей:

$$\begin{array}{lr}   n    & 0 & 1 & 2 &  3 & 4 & 5 &  6 & 7 \\\\
  a(n) & 0 & 0 & 0 &  1 & 0 & 0 &  1 & 2 \\\\   b(n) & 1 & 1 & 1 & -1 & 1 & 1 & -1 & 1 \\\\
  s(n) & 1 & 2 & 3 &  2 & 3 & 4 &  3 & 4 \end{array}$$

Послідовність $s(n)$ має унікальну властивість: всі її елементи додатні, а кожне натуральне число $k$ зустрічається рівно $k$ разів.

Визначимо $g(t, c)$ за умови $1 ≤ c ≤ t$ як індекс в $s(n)$, за якого $t$ зустрічається $c$-ний раз в послідовності $s(n)$.

Наприклад, $g(3, 3) = 6$, $g(4, 2) = 7$ та $g(54321, 12345) = 1\\,220\\,847\\,710$.

Нехай $F(n)$ буде послідовністю Фібоначчі, визначеною наступним чином:

$$\begin{align}   & F(0) = F(1) = 1 \text{ та} \\\\
  & F(n) = F(n - 1) + F(n - 2) \text{ за умови } n > 1. \end{align}$$

Визначимо $GF(t) = g(F(t), F(t - 1))$.

Знайдіть $\sum GF(t)$ за умови $2 ≤ t ≤ 45$.

# --hints--

`rudinShapiroSequence()` має повернути `3354706415856333000`.

```js
assert.strictEqual(rudinShapiroSequence(), 3354706415856333000);
```

# --seed--

## --seed-contents--

```js
function rudinShapiroSequence() {

  return true;
}

rudinShapiroSequence();
```

# --solutions--

```js
// solution required
```
